package hotel;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.SQLException;

import javax.swing.*;


public class SettaStanze extends JFrame implements ActionListener{
	ImageIcon iconax=new ImageIcon("Risorse/iconax.png");
	private int numStanze;
	private JPanel pannello;
	private JScrollPane scroll;
	private JTextField[] stanze,prezzo;
	private JLabel numero,posti,matrimoniale;
	private String[] clienti={"1","2","3","4"};
	private String[] sino={"NO","SI"};
	private JComboBox[] numeroPosti;
	private JComboBox[] mat;
	private JButton inizializza;
	private Database d;
	private JLabel prezz;
	private String username;
	
	private void creaLeTabelle() {
		d.iniz(username);
	}

	public SettaStanze(Database d, String username,int numStanze){
		this.username=username;
		this.d=d;
		this.numStanze=numStanze;
		Image immagineIc = Toolkit.getDefaultToolkit().getImage(
				"Risorse/HOTEL.png");
		setIconImage(immagineIc);
		this.setSize(600,500);
		this.setLocation(350,180);
		this.setTitle("Settaggio Stanze");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		numero=new JLabel("Numero Stanza");
		posti=new JLabel("Numero Posti");
		prezz=new JLabel("Prezzo");
		matrimoniale=new JLabel("Matrimoniale");
		pannello=new JPanel(new GridLayout(0,4));
		scroll=new JScrollPane(pannello);
		this.add(scroll);
		stanze=new JTextField[numStanze];
		numeroPosti=new JComboBox[numStanze];
		mat=new JComboBox[numStanze];
		prezzo=new JTextField[numStanze];
		pannello.add(numero);
		pannello.add(posti);
		pannello.add(prezz);
		pannello.add(matrimoniale);
		for(int i=0;i<numStanze;i++){
			stanze[i]=new JTextField();
			stanze[i].addActionListener(this);
			pannello.add(stanze[i]);
			numeroPosti[i]=new JComboBox(clienti);
			numeroPosti[i].setActionCommand("" + i);
			numeroPosti[i].addActionListener(this);
			pannello.add(numeroPosti[i]);
			prezzo[i]=new JTextField();
			pannello.add(prezzo[i]);
			mat[i]=new JComboBox(sino);
			mat[i].setVisible(false);
			pannello.add(mat[i]);
		}
		inizializza=new JButton("Inizializza!");
		inizializza.addActionListener(this);
		pannello.add(new JLabel());
		pannello.add(new JLabel());
		pannello.add(inizializza);
		this.setVisible(true);
		this.setResizable(false);

	}
	
	public void actionPerformed(ActionEvent e){
		   if( e.getSource() instanceof JComboBox) {
		       int c=Integer.valueOf(e.getActionCommand());
		       if(Integer.valueOf((String) numeroPosti[c].getSelectedItem())>1)
					mat[c].setVisible(true);
		       else
					mat[c].setVisible(false);
		   }else if(e.getSource()==inizializza){
			   if(controlla()){
				   creaLeTabelle();
				   popolaTabellaStanze();
				   GraficaHotel gra;
				try {
					d.queryInserimento("UPDATE accesso.dati SET installato=1 where username='"+username+"'");
					gra = new GraficaHotel(d,username);
					gra.setVisible(true);
					this.dispose();
				} catch (SQLException | IOException e1) {
					e1.printStackTrace();
				} catch (ClassNotFoundException e1) {
					e1.printStackTrace();
				}
			   }else{
				   JOptionPane.showMessageDialog(null, "Completare tutti i campi!",
							"ERRORE", JOptionPane.ERROR_MESSAGE,iconax);
				   this.setVisible(true);
			   }
		   }
		}

	private void popolaTabellaStanze() {
		boolean flag;
		for(int i=0;i<numStanze;i++){
			flag=false;
			if(mat[i].getSelectedItem().equals("SI"))
				flag=true;
			if(d.queryInserimento("INSERT INTO "+username+".camere(numero,numeroposti,numpostioccupati,matrimoniale,stato,prezzo)" +
					" VALUES('"+stanze[i].getText()+"',"+numeroPosti[i].getSelectedItem()+
					",0,"+flag+",'DISPONIBILE','"+prezzo[i].getText()+"')")==0)
				JOptionPane.showMessageDialog(null, "Stanza "+stanze[i].getText()+" gia' presente nel Database!",
						"ERRORE", JOptionPane.ERROR_MESSAGE,iconax);
		}
	}

	private boolean controlla() {
		for(int i=0;i<numStanze;i++){
			if(stanze[i].getText().equals(""))
				return false;
			if(prezzo[i].getText().equals(""))
				return false;
		}return true;
	}
}
